class Solution(object):
    def isPalindrome(self, x):  # palindrome 回文
        """
        :type x: int
        :rtype: bool
        给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
        回文数
            是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
            例如，121 是回文，而 123 不是。
        """
        # 负数没有回文数
        if x < 0:
            return False
        # 将数字转换为数组
        array = []
        while x > 0:
            # 获取最后一位的值
            array.append(x % 10)
            # 原本的数字去掉最后一位
            x //= 10
        array = array[::-1]  # 由于数字是从最低位开始提取，需要反转列表
        positiveIndex = 0  # 正索引
        negativeIndex = -1  # 负索引
        # return array
        for i in range(len(array)):
            # print("第",i+1,"次循环")
            # print("前对比数为",array[positiveIndex])
            # print("后对比数为", array[negativeIndex])
            # 判断奇数偶数
            if len(array) % 2 == 0:  #偶数情况下需要前后对比
                # 判断对称的一方是否相等
                if array[positiveIndex] != array[negativeIndex]:
                    return False
            else:  # 奇数情况下，中间数不需要对比
                middle = len(array) // 2  # 找到中间的索引值 //表示整除，不要余数。
                # 中间值不参与比较
                if positiveIndex != middle and negativeIndex != middle:
                    # 判断对称的一方是否相等
                    if array[positiveIndex] != array[negativeIndex]:
                        return False
            # 更新索引值
            positiveIndex += 1
            negativeIndex -= 1
        # 如果对称比较都正确，返回True
        return True


# 实例对象
solution = Solution()

# 测试用例
x = 2067117602
print(solution.isPalindrome(x))
# for i in solution.isPalindrome(x):
#     print(i)
